package jp.co.systemi.asp.utils;

/* LogRecordTest.java */
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Formatter;
import java.util.logging.LogRecord;

public class LogFormatter extends Formatter {
  public final static String LINE_SEP = System.getProperty("line.separator");

  // Formater のフォーマットを作成
  public synchronized String format(LogRecord record) {
    StringBuffer buf = new StringBuffer();
    // 日時を設定
    buf.append("<");
    Date date = new Date();
    date.setTime(record.getMillis());
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
    buf.append(formatter.format(date));
    buf.append("> ");

    // クラス情報を設定
    buf.append("<");
    buf.append(record.getSourceClassName());
    buf.append(" ");
    buf.append(record.getSourceMethodName());
    buf.append(" : ");

    // ソースの行数を取得
    StackTraceElement[] ste = new Throwable().getStackTrace();
    buf.append(ste[7].getLineNumber());
    buf.append("> ");

    // レベルを設定
    buf.append("<");
    buf.append(record.getLevel().getLocalizedName());
    buf.append("> ");

    // メッセージを設定
    buf.append("<");
    buf.append(record.getMessage());
    buf.append(">");

    buf.append(LINE_SEP);
    return buf.toString();
  }

}
